mscJNeuralNet.patterns
Class Patterns

java.lang.Object
  extended bymscJNeuralNet.patterns.Patterns

public class Patterns
extends java.lang.Object

Diese Klasse repräsentiert Lerndatensätze für das KNN. Die Lerndatensätze werden als Eingabemuster-Array und Ausgabemuster-Array gespeichert.
Folgende Features sind möglich:

  • Die Lerndatensätze in einem SNNS -kompatiblen Format gespeichert (@link #save(String, Patterns)) und geladen (@link #load(String))werden.
  • Es ist möglich SNNS-ähnliche Kommentarzeilen mit dem Kommentarsymbol "#" in die gespeicherten Netze einzufügen.
  • Die Menge der Lerndatensätze kann nach widersprüchlichen Datensätzen durchsucht werden (getContradictoryPatterns()).
  • Mehrere Lerndatensatz-Mengen (Patterns Objekte) können zu einem einzigen Lerndatensatz zusammengefügt werden (merge(Patterns, Patterns)).
  • Die Lerndatensätze könne in einer zufälligen Reihenfolge abgerufen werden (getRandomizedPatternsOrder()).
  • Created on 10.11.2003

    Version:
    14.06.2004
    Author:
    M. Serhat Cinar

    Constructor Summary
    Patterns(int inputsize, int outputsize, int patterncount)
              Erzeugt eine neue Instanz von Patterns.
     
    Method Summary
     void addComment(java.lang.String pComment)
              Fügt eine neue Kommentarzeile zu dieser Lerndatenmenge.
    static boolean arePatternsEqual(double[] pPatternOne, double[] pPatternTwo)
              Testet, ob zwei Muster (Arrays mit double-Werten) gleich sind.
     java.util.Vector getComments()
              Liefert einen Vector aller Kommentare für diese Lerndatenmenge.
     int[] getContradictoryPatterns()
              Überprüft, ob gleiche Eingabemuster verschiedenen Ausgabemsutern zugeordnet sind.
     double[] getInputPattern(int index)
              Liefert das Eingabemuster des Lerndatensatzes mit dem gegebenen Index.
     double[][] getInputPatterns()
              Liefert die Eingabemuster aller Lerndatensätze.
     int getInputPatternSize()
              Liefert die Größe eines Eingabemusters.
     double getInputToken(int neuronindex, int patternindex)
              Liefert ein einzelnes Datum des angegebenen Eingabemusters.
     double[] getOutputPattern(int index)
              Liefert das Ausgabemuster des Lerndatensatzes mit dem gegebenen Index.
     double[][] getOutputPatterns()
              Liefert die Ausgabemuster aller Lerndatensätze.
     int getOutputPatternSize()
              Liefert die Größe eines Ausgabemusters.
     double getOutputToken(int neuronindex, int patternindex)
              Liefert ein einzelnes Datum des angegebenen Ausgabemusters.
     int getPatternsCount()
              Liefert die Anzahl der Lerndatensätze.
     int[] getRandomizedPatternsOrder()
              Liefert ein Array mit allen Indizes der Lerndatensätze in zufälliger Reihenfolge.
    static Patterns load(java.io.File pSourceFile)
              Lädt alle Lerndatensätze (Eingabe- sowie Ausgabemuster) aus einer Datei und erzeugt ein Patterns Objekt.
    static Patterns load(java.io.Reader pReader)
              Lädt alle Trainingsdaten (Eingabe- sowie Ausgabemuster) aus einem Characterstream (Reader) und erzeugt ein Patternobjekt.
    static Patterns load(java.lang.String pSourceFileName)
              Lädt alle Lerndatensätze (Eingabe- sowie Ausgabemuster) aus einer Datei und erzeugt ein Patterns Objekt.
    static void main(java.lang.String[] argv)
               
    static Patterns merge(Patterns pPatternOne, Patterns pPatternTwo)
              Erzeugt eine neue Lerndatenmenge aus den beiden übergebenen Lerndatenmengen.
     void removeComments()
              Entfernt alle Kommentare für diese Lerndatenmenge.
    static void save(java.io.File pTargetFile, Patterns pPatternsToSave)
              Speichert die gegebene Lerndatenmenge in der gegebenen Datei.
    static void save(java.lang.String pTargetFileName, Patterns pPatternsToSave)
              Speichert die gegebene Lerndatenmenge in der gegebenen Datei.
    static void save(java.io.Writer pWriter, Patterns pPatternToSave)
              Gibt die gegebene Lerndatenmenge über das gegebene Writer-Objekt aus.
     void setInputToken(int neuronindex, int patternindex, double value)
              Legt den Wert eines einzelnen Datums im definierten Eingabemuster fest.
     void setOutputToken(int neuronindex, int patternindex, double value)
              Legt den Wert eines einzelnen Datums im definierten Ausgabemuster fest.
     java.lang.String toString()
               
     
    Methods inherited from class java.lang.Object
    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
     

    Constructor Detail

    Patterns

    public Patterns(int inputsize,
                    int outputsize,
                    int patterncount)
    Erzeugt eine neue Instanz von Patterns. Die gegebenen Parameter werden benutzt, um den benötigten Speicher für die Lerndaten zu reservieren.

    Parameters:
    inputsize - Größe eines Eingabemusters.
    outputsize - Größe eines Ausgabemusters.
    patterncount - Anzahl der zu speichernden Lerndatensätze.
    Method Detail

    main

    public static void main(java.lang.String[] argv)

    getInputPatterns

    public double[][] getInputPatterns()
    Liefert die Eingabemuster aller Lerndatensätze.

    Returns:
    Eingabemuster aller Lerndatensätze.

    getInputPattern

    public double[] getInputPattern(int index)
    Liefert das Eingabemuster des Lerndatensatzes mit dem gegebenen Index.

    Parameters:
    index - Index des Lerndatensatzes.
    Returns:
    Eingabemuster des Lerndatensatzes mit dem gegebenen Index.

    getOutputPatterns

    public double[][] getOutputPatterns()
    Liefert die Ausgabemuster aller Lerndatensätze.

    Returns:
    Ausgabemuster aller Lerndatensätze.

    getOutputPattern

    public double[] getOutputPattern(int index)
    Liefert das Ausgabemuster des Lerndatensatzes mit dem gegebenen Index.

    Parameters:
    index - Index des Lerndatensatzes.
    Returns:
    Ausgabemuster des Lerndatensatzes mit dem gegebenen Index.

    getInputToken

    public double getInputToken(int neuronindex,
                                int patternindex)
    Liefert ein einzelnes Datum des angegebenen Eingabemusters.

    Parameters:
    neuronindex - Index des Neurons, zu dem das Datum bestimmt werden soll.
    patternindex - Index des Lerndatensatzes, aus dem das Datum bestimmt werden soll.
    Returns:
    Einzelnes Datum des Eingabemusters.

    getOutputToken

    public double getOutputToken(int neuronindex,
                                 int patternindex)
    Liefert ein einzelnes Datum des angegebenen Ausgabemusters.

    Parameters:
    neuronindex - Index des Neurons, zu dem das Datum bestimmt werden soll.
    patternindex - Index des Lerndatensatzes, aus dem das Datum bestimmt werden soll.
    Returns:
    Einzelnes Datum des Ausgabemusters.

    getInputPatternSize

    public int getInputPatternSize()
    Liefert die Größe eines Eingabemusters.

    Returns:
    Die Größe eines Eingabemusters.

    getOutputPatternSize

    public int getOutputPatternSize()
    Liefert die Größe eines Ausgabemusters.

    Returns:
    Die Größe eines Ausgabemusters.

    getPatternsCount

    public int getPatternsCount()
    Liefert die Anzahl der Lerndatensätze.

    Returns:
    Die Anzahl der Lerndatensätze.

    setInputToken

    public void setInputToken(int neuronindex,
                              int patternindex,
                              double value)
    Legt den Wert eines einzelnen Datums im definierten Eingabemuster fest.

    Parameters:
    neuronindex - Index des Neurons, zu dem das Datum geändert werden soll.
    patternindex - Index des Lerndatensatzes, zu dem das Datum geändert werden soll.
    value - Der neue Wert für das Datum.

    setOutputToken

    public void setOutputToken(int neuronindex,
                               int patternindex,
                               double value)
    Legt den Wert eines einzelnen Datums im definierten Ausgabemuster fest.

    Parameters:
    neuronindex - Index des Neurons, zu dem das Datum geändert werden soll.
    patternindex - Index des Lerndatensatzes, zu dem das Datum geändert werden soll.
    value - Der neue Wert für das Datum.

    getRandomizedPatternsOrder

    public int[] getRandomizedPatternsOrder()
    Liefert ein Array mit allen Indizes der Lerndatensätze in zufälliger Reihenfolge.

    Returns:
    Array mit allen Indizes der Lerndatensätze in zufälliger Reihenfolge.

    getComments

    public java.util.Vector getComments()
    Liefert einen Vector aller Kommentare für diese Lerndatenmenge. Die einzelnen Einträge des Vectors sind vom Typ String. Die Kommentare werden beim Speichern der Lerndatenmenge als Kommentarzeilen eingefügt.

    Returns:
    Vector aller Kommentare für diese Lerndatenmenge.

    removeComments

    public void removeComments()
    Entfernt alle Kommentare für diese Lerndatenmenge. Die Kommentare werden beim Speichern der Lerndatenmenge als Kommentarzeilen eingefügt.


    addComment

    public void addComment(java.lang.String pComment)
    Fügt eine neue Kommentarzeile zu dieser Lerndatenmenge. Die Kommentare werden beim Speichern der Lerndatenmenge als Kommentarzeilen eingefügt.

    Parameters:
    pComment - Neue Kommentarzeile zu dieser Lerndatenmenge.

    getContradictoryPatterns

    public int[] getContradictoryPatterns()
    Überprüft, ob gleiche Eingabemuster verschiedenen Ausgabemsutern zugeordnet sind. Zwei Muster sind widersprüchlich, wenn sie dasselbe Eingabemuster, aber verschiedene Ausgabemuster haben.

    Returns:
    Zwei Lerndatenindizes, falls die Lerndaten einen Widerspruch enthalten, sonst null.

    arePatternsEqual

    public static boolean arePatternsEqual(double[] pPatternOne,
                                           double[] pPatternTwo)
    Testet, ob zwei Muster (Arrays mit double-Werten) gleich sind.

    Parameters:
    pPatternOne - Erstes Muster.
    pPatternTwo - Zweites Muster.
    Returns:
    true, falls beide Muster gleich sind, false, wenn sie verschieden sind.

    toString

    public java.lang.String toString()

    load

    public static Patterns load(java.lang.String pSourceFileName)
                         throws java.io.IOException,
                                java.text.ParseException
    Lädt alle Lerndatensätze (Eingabe- sowie Ausgabemuster) aus einer Datei und erzeugt ein Patterns Objekt.

    Parameters:
    pSourceFileName - Dateiname der Lerndatensätze.
    Returns:
    Lerndatensätze aus der angegebenen Datei.
    Throws:
    java.io.IOException - Falls beim Laden der Lerndatensätze aus der Datei ein Fehler entsteht.
    java.text.ParseException - Falls beim Parsen der Datensätze fehler auftreten (z.B. falsches Dateiformat).
    See Also:
    load(Reader)

    load

    public static Patterns load(java.io.File pSourceFile)
                         throws java.io.IOException,
                                java.text.ParseException
    Lädt alle Lerndatensätze (Eingabe- sowie Ausgabemuster) aus einer Datei und erzeugt ein Patterns Objekt.

    Parameters:
    pSourceFile - Datei der Lerndatensätze.
    Returns:
    Lerndatensätze aus der angegebenen Datei.
    Throws:
    java.io.IOException - Falls beim Laden der Lerndatensätze aus der Datei ein Fehler entsteht.
    java.text.ParseException - Falls beim Parsen der Datensätze fehler auftreten (z.B. falsches Dateiformat).
    See Also:
    load(Reader)

    load

    public static Patterns load(java.io.Reader pReader)
                         throws java.io.IOException,
                                java.text.ParseException
    Lädt alle Trainingsdaten (Eingabe- sowie Ausgabemuster) aus einem Characterstream (Reader) und erzeugt ein Patternobjekt. Die gelesene Datei sollte das von SNNS benutzte Dateiformat für Patterns sein:
     SNNS pattern definition file V3.2
     generated at Wed Feb 04 14:34:21 2004
     
     # Ein Kommentar
     
     No. of patterns : 147
     No. of input units : 4
     No. of output units : 1
     
     0.0 1.0 1.0 0.5 -0.3
     1.0 0.0 -1.0 0.2 0.1
     ...
     
    Dabei sind die Zeilen "SNNS pattern definition file V3.2" und "generated at Wed Feb 04 14:34:21 2004" optional.
    Die Anzahl der Lerndatensätze (No. of patterns), Eingabegröße (No. of input units) und Ausgabegröße (No. of output units) können auch ohne das vorangestellte "No. of ... :" angegeben werden, wenn die folgende Reihenfolge eingehalten wird:
    Anzahl Lerndatensätze
    Eingabegröße
    Ausgabegröße
    Bsp.:
     147 4 1
     
    Zwischen den eigentlichen Datensätzen und dem Header mit Anzahl der Datensätze, Eingabegröße und Ausgabegröße MUSS mindestens ein Zeilenvorschub stehen:
     2 1 1
     1.0 1.0 1.0 1.0 0.0 0.0
     
    Ein Fehler wäre:
     2 1 1 1.0 1.0 1.0
     1.0 0.0 0.0
     
    Die Daten selbst können beliebig durch Zeilenvorschübe und Leerzeichen formatiert werden. Der Übersichtlichkeit halber sollte in jeder Zeile ein Datensatz stehen und zwischen den Eingabe- und Ausgabemustern ein sichtbarer Leerzeichenabstand sein.

    Parameters:
    pReader - Reader, aus dem die Lerndatensätze gelesen werden sollen.
    Returns:
    Lerndatensätze aus dem angegebenen Reader.
    Throws:
    java.io.IOException - Falls beim Laden der Lerndatensätze aus der Datei ein Fehler entsteht.
    java.text.ParseException - Falls beim Parsen der Datensätze fehler auftreten (z.B. falsches Dateiformat).

    save

    public static void save(java.lang.String pTargetFileName,
                            Patterns pPatternsToSave)
                     throws java.io.IOException
    Speichert die gegebene Lerndatenmenge in der gegebenen Datei.

    Parameters:
    pTargetFileName - Dateiname, in welche die Lerndatenmenge gespeichert werden soll.
    pPatternsToSave - Zu speichernde Lerndatenmenge.
    Throws:
    java.io.IOException - Falls bei der Ausgabe der Lerndatensätze in die Datei ein Fehler entsteht.
    See Also:
    load(Reader)

    save

    public static void save(java.io.File pTargetFile,
                            Patterns pPatternsToSave)
                     throws java.io.IOException
    Speichert die gegebene Lerndatenmenge in der gegebenen Datei.

    Parameters:
    pTargetFile - Datei, in welche die Lerndatenmenge gespeichert werden soll.
    pPatternsToSave - Zu speichernde Lerndatenmenge.
    Throws:
    java.io.IOException - Falls bei der Ausgabe der Lerndatensätze in die Datei ein Fehler entsteht.
    See Also:
    load(Reader)

    save

    public static void save(java.io.Writer pWriter,
                            Patterns pPatternToSave)
    Gibt die gegebene Lerndatenmenge über das gegebene Writer-Objekt aus. Das Benutze Dateiformat wird unter load(Reader) beschrieben.

    Parameters:
    pWriter - Writer, in welche die Ausgabe stattfinden soll.
    pPatternToSave - Zu speichernde Lerndatenmenge.
    See Also:
    load(Reader)

    merge

    public static Patterns merge(Patterns pPatternOne,
                                 Patterns pPatternTwo)
                          throws PatternsIncompatibleException
    Erzeugt eine neue Lerndatenmenge aus den beiden übergebenen Lerndatenmengen. Es ist notwendig, dass beide Patterns Objekte identische Eingabe- und Ausgabegrössen haben.

    Parameters:
    pPatternOne - Erste Lerndatenmenge.
    pPatternTwo - Zweite Lerndatenmenge.
    Returns:
    Eine neue Lerndatenmenge, das aus den beiden übergebenen Lerndatenmengen besteht.
    Throws:
    PatternsIncompatibleException - Falls beide Lerndatenmengen nicht identische Eingabe- und Ausgabegrössen haben.